home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 1998 August / PC Plus SuperCD 50a Issue 142 (CD142a) (August 1998).iso / full / jbuild / setup / JBuilder / jruntime.z / select.jar / sun / demo / select / Select.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-12-17  |  5.4 KB  |  232 lines

  1. package sun.demo.select;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.Font;
  6. import java.awt.Label;
  7. import java.awt.LayoutManager;
  8. import java.awt.List;
  9. import java.awt.Panel;
  10. import java.awt.event.ActionEvent;
  11. import java.io.IOException;
  12. import java.io.ObjectInputStream;
  13. import java.io.ObjectOutputStream;
  14. import java.sql.Connection;
  15. import java.sql.ResultSet;
  16. import java.sql.ResultSetMetaData;
  17. import java.sql.SQLException;
  18. import java.sql.Statement;
  19. import java.util.Vector;
  20.  
  21. public class Select extends Panel {
  22.    private transient Label status;
  23.    private transient List text;
  24.    private static final int NO_WORK = 0;
  25.    private static final int DO_SELECT = 3;
  26.    private transient int work = 0;
  27.    private static final String spaces = "                                                                                                                                 ";
  28.    private String url = "jdbc:odbc:SQLSERVER";
  29.    private String user = "guest";
  30.    private String password = "guest";
  31.    private String selectString = "";
  32.    private int maxRows = 200;
  33.  
  34.    public Select() {
  35.       ((Container)this).setLayout((LayoutManager)null);
  36.       ((Component)this).resize(200, 300);
  37.       this.initialize();
  38.    }
  39.  
  40.    private void initialize() {
  41.       if (this.text == null) {
  42.          ((Container)this).removeAll();
  43.          this.text = new List();
  44.          this.text.setFont(new Font("Courier", 0, 12));
  45.          ((Container)this).add(this.text);
  46.          this.status = new Label("", 0);
  47.          ((Container)this).add(this.status);
  48.          this.layout();
  49.          new WorkerThread(this);
  50.       }
  51.    }
  52.  
  53.    void doWork() {
  54.       while(true) {
  55.          int var1 = this.getWork();
  56.          if (var1 == 3) {
  57.             this.select();
  58.          }
  59.       }
  60.    }
  61.  
  62.    synchronized int getWork() {
  63.       this.work = 0;
  64.  
  65.       while(this.work == 0) {
  66.          try {
  67.             this.wait();
  68.          } catch (Exception var2) {
  69.          }
  70.       }
  71.  
  72.       int var1 = this.work;
  73.       return var1;
  74.    }
  75.  
  76.    void select() {
  77.       this.text.removeAll();
  78.       Connection var1 = Util.connect(this.url, this.user, this.password, this.status);
  79.  
  80.       try {
  81.          Statement var2 = var1.createStatement();
  82.          ResultSet var3 = var2.executeQuery(this.selectString);
  83.          ResultSetMetaData var4 = var3.getMetaData();
  84.          int var5 = var4.getColumnCount();
  85.          int[] var6 = new int[var5 + 1];
  86.          Vector[] var7 = new Vector[var5 + 1];
  87.  
  88.          for(int var8 = 1; var8 <= var5; ++var8) {
  89.             var6[var8] = var4.getColumnName(var8).length();
  90.             var7[var8] = new Vector();
  91.          }
  92.  
  93.          int var9;
  94.          for(var9 = 0; var3.next() && var9 < this.maxRows; ++var9) {
  95.             for(int var10 = 1; var10 <= var5; ++var10) {
  96.                String var11 = var3.getString(var10);
  97.                if (var11 == null) {
  98.                   var11 = "";
  99.                }
  100.  
  101.                if (var11.length() > 80) {
  102.                   var11 = var11.substring(0, 80);
  103.                }
  104.  
  105.                if (var11.length() > var6[var10]) {
  106.                   var6[var10] = var11.length();
  107.                }
  108.  
  109.                var7[var10].addElement(var11);
  110.             }
  111.          }
  112.  
  113.          String var18 = "";
  114.  
  115.          for(int var19 = 1; var19 <= var5; ++var19) {
  116.             String var12 = var4.getColumnName(var19);
  117.             int var13 = var6[var19] - var12.length();
  118.             if (var19 != 1) {
  119.                ++var13;
  120.             }
  121.  
  122.             if (var13 > 0) {
  123.                var18 = var18 + "                                                                                                                                 ".substring(0, var13);
  124.             }
  125.  
  126.             var18 = var18 + var12;
  127.          }
  128.  
  129.          this.text.addItem(var18);
  130.  
  131.          for(int var20 = 0; var20 < var9; ++var20) {
  132.             String var21 = "";
  133.  
  134.             for(int var14 = 1; var14 <= var5; ++var14) {
  135.                String var15 = (String)var7[var14].elementAt(var20);
  136.                int var16 = var6[var14] - var15.length();
  137.                if (var14 != 1) {
  138.                   ++var16;
  139.                }
  140.  
  141.                if (var16 > 0) {
  142.                   var21 = var21 + "                                                                                                                                 ".substring(0, var16);
  143.                }
  144.  
  145.                var21 = var21 + var15;
  146.             }
  147.  
  148.             this.text.addItem(var21);
  149.          }
  150.  
  151.          if (this.text.countItems() >= this.maxRows) {
  152.             this.status.setText("Only read first " + this.maxRows + " rows");
  153.          } else {
  154.             this.status.setText("Done.");
  155.          }
  156.       } catch (SQLException var17) {
  157.          System.err.println("Caught " + var17);
  158.          this.status.setText("Caught " + var17);
  159.       }
  160.  
  161.       Util.disconnect(var1);
  162.       this.layout();
  163.    }
  164.  
  165.    public synchronized void layout() {
  166.       this.initialize();
  167.       int var1 = ((Component)this).size().width;
  168.       int var2 = ((Component)this).size().height;
  169.       this.text.reshape(0, 0, var1, var2 - 40);
  170.       this.status.reshape(15, var2 - 30, 2 * var1, 25);
  171.    }
  172.  
  173.    public String getURL() {
  174.       return this.url;
  175.    }
  176.  
  177.    public void setURL(String var1) {
  178.       this.url = var1;
  179.    }
  180.  
  181.    public String getUser() {
  182.       return this.user;
  183.    }
  184.  
  185.    public void setUser(String var1) {
  186.       this.user = var1;
  187.    }
  188.  
  189.    public String getPassword() {
  190.       return this.password;
  191.    }
  192.  
  193.    public void setPassword(String var1) {
  194.       this.password = var1;
  195.    }
  196.  
  197.    public String getSQL() {
  198.       return this.selectString;
  199.    }
  200.  
  201.    public void setSQL(String var1) {
  202.       this.selectString = var1;
  203.    }
  204.  
  205.    public int getMaxRows() {
  206.       return this.maxRows;
  207.    }
  208.  
  209.    public void setMaxRows(int var1) {
  210.       this.maxRows = var1;
  211.    }
  212.  
  213.    private void writeObject(ObjectOutputStream var1) throws IOException {
  214.       this.text.removeAll();
  215.       var1.defaultWriteObject();
  216.    }
  217.  
  218.    private void readObject(ObjectInputStream var1) throws ClassNotFoundException, IOException {
  219.       var1.defaultReadObject();
  220.       this.initialize();
  221.    }
  222.  
  223.    public void update(ActionEvent var1) {
  224.       this.update();
  225.    }
  226.  
  227.    public synchronized void update() {
  228.       this.work = 3;
  229.       this.notify();
  230.    }
  231. }
  232.